/*
   JStepPanelEventListener.java
   (C) 2007 - Michael Ocean - Boston University

  This work is a part of the larger snBench project.  Information
  can be found at: http://csr.bu.edu/snbench

  This program is free software; you can redistribute it and/or
  modify it under the terms of Version 2 of the GNU General Public 
  License.
  
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  General Public License for more details.
  
  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the Free
  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package stepide.STEPVisualizer;

import stepide.STEPVisualizer.JStepPanel.FakeStepNode;

/**
 * @author Michael
 *
 *
 * JStepPanelEventListener
 * ide.ui.STEPVisualizer / JStepPanelEventListener.java
 */
public interface JStepPanelEventListener {

	/**
	 * This can be used to be alerted when in 
	 * "arrow" mode, or just whatever.
	 * 
	 * @param node
	 */
	public void NodeLeftClicked(FakeStepNode node,int x, int y);
	
	/**
	 * Provide this method to display a context menu for
	 * a particular node that allows, say, modification, 
	 * deletion, etc.
	 * 
	 * @param node
	 */
	public void NodeRightClicked(FakeStepNode node,int x, int y);

	
	public void NodeDoubleClicked(FakeStepNode node,int x, int y);
	
	
	/**
	 * Over-ride this method to display a context menu to allow the
	 * user to, create a node or clear the graph for example 
	 */
	public void CanvasRightClicked(int x, int y);
	

	/**
	 * Over-ride this method to allow the user to, for example 
	 * create a node
	 *  
	 */
	public void CanvasLeftClicked(int x, int y);

	public void CanvasDoubleClicked(int x, int y);
	
	public void EdgeLeftClicked(FakeStepNode src,FakeStepNode dst,int x, int y);
	
	public void EdgeRightClicked(FakeStepNode src,FakeStepNode dst,int x, int y);

	
	public void EdgeDoubleClicked(FakeStepNode src,FakeStepNode dst,int x, int y);
	
}
